package one.stand.request;

import io.swagger.annotations.ApiParam;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.Future;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 企业优惠券(CompanyCoupon)实体类
 *
 * @author makejava
 */
@Data
public class CompanyCouponRequest extends BaseRequest {

    private Integer companyId;
    /**
     * 优惠券id
     */
    @ApiParam(value = "优惠券id")
    private Long couponId;
    /**
     * 优惠券名称
     */
    @ApiParam(value = "优惠券名称")
    @NotNull(message = "优惠券名称不能为空")
    private String name;

    @ApiParam(value = "使用范围")
    @NotNull(message = "使用范围不能为空")
    private String goodstypeId;

    /**
     * 优惠类型1满减，2折扣
     */
    @ApiParam(value = "优惠类型1满减，2折扣")
    @NotNull(message = "优惠类型不能为空")
    private Integer couponType;
    /**
     * 优惠券面值
     */
    @ApiParam(value = "优惠券面值")
    @Min(value = 0,message = "不能小于0")
    private BigDecimal couponFaceValue;
    /**
     * 优惠券折扣
     */
    @ApiParam(value = "优惠券折扣")
    @Min(value = 0,message = "不能小于0")
    private BigDecimal couponDiscount;
    /**
     * 最低消费金额
     */
    @ApiParam(value = "最低消费金额")
    @Min(value = 0,message = "不能小于0")
    private BigDecimal minAmount;
    /**
     * 发放开始时间
     */
    @ApiParam(value = "发放开始时间 格式：2020-04-26 16:38:00")
    @NotNull(message = "发放开始时间不能为空")
//    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date grantStartTime;
    /**
     * 发放截止时间
     */
    @ApiParam(value = "发放截止时间 格式：2020-04-26 16:38:00")
    @NotNull(message = "发放截止时间不能为空")
//    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date grantEndTime;
    /**
     * 有效开始时间
     */
    @ApiParam(value = "有效开始时间 格式：2020-04-26 16:38:00")
    @NotNull(message = "有效开始时间不能为空")
//    @Future(message = "有效日期需要大于当前时间")
//    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date effectiveStartTime;
    /**
     * 有效截止时间
     */
    @ApiParam(value = "有效截止时间 格式：2020-04-26 16:38:00")
    @NotNull(message = "有效截止时间不能为空")
//    @DateTimeFormat(pattern = "yyyy-MM-dd")
//    @Future(message = "有效日期需要大于当前时间")
    private Date effectiveEndTime;
    /**
     * 发放类型/方式，1：自动发放，2手动领取，3红包发放
     */
    @ApiParam(value = "发放类型，1：自动发放，2手动领取，3红包发放")
    @NotNull(message = "发放类型不能为空")
    private Integer grantMode;
    /**
     * 投放对象1:所有对象
     */
    @ApiParam(value = "投放对象1:所有对象")
    private Integer grantObject;
    /**
     * 优惠卷发放数量 0 表示不限制
     */
    @ApiParam(value = "发放数量")
    @NotNull(message = "发放数量不能为空")
    @Min(value = 0,message = "不能小于0")
    private Integer couponNum;
    /**
     * 领取数量
     */
    @ApiParam(value = "领取数量")
    @Min(value = 0,message = "不能小于0")
    private Integer receiveNum;
    /**
     * 同一用户最多发放多少 0 不限制
     */
    @ApiParam(value = "同一用户最多发放多少")
    @Min(value = 0,message = "不能小于0")
    private Integer maxUser;
    /**
     * 发布状态 1禁用 2启用
     */
    @ApiParam(value = "发布状态 默认1禁用 2启用")
    private Integer pubState;
    /**
     * 优惠券备注
     */
    @ApiParam(value = "优惠券备注")
    private String note;


}
